『Structured Design』 による凝集度の分類
Wikipediaによると常に優劣が付くものでもないらしい
これらはどういうつもりでの分類なのだろうか #?? 任意のプログラムは常にいずれかに該当するというものなのか重複はありうるのか
そもそも分類自体がMECEであるのか
「凝集度」という概念自体が重要なのは納得感があるものの、この分類については割と違和感があったりするmrsekut.icon
とは言え言語化できるほど構造化できていない
数ページなのですぐ読めるはずだが面倒
分類の性質的に、「あるある」を集めて分類したもの、というのはあるだろう
理想的な、論理的な話をしているのではなく、
具体的なコードで良く書かれがちなパターンを分類してみました!それには優劣があったりなかったりすることがわかりますた!
という話だろう
論理的に考えれば、だいたい全て機能的凝集に属すると思う 論理的に設計する際はメンタルモデルなどが先んじるはずで、その様に思考すれば偶発的凝集なんて現れるはずがない ここでの分類は、そうではなく、コードが成長する中で徐々におかしくなっていき、こういったパターンに陥りがち、みたいな感じなのではないか
理想的な凝集
中程度
順番の関係ない、特定のデータを扱う処理の集まり
特定のデータを扱う処理の集まりで、かつ順番に関係がある部分を集めたmodule
特定の時間でかつ、実行順序に意味のある複数の処理がまとまっている
呼ばれるタイミングが同じものを集める
論理的に似ている複数の処理が関数にまとまっている
最低
関連性がない処理が1つの関数内に実装されている
具体例多い